package com.gitee.qdbp.jdbc.plugins;

/**
 * SQL片断的选项
 *
 * @author zhaohuihua
 * @version 20201124
 * @since 3.2.10
 */
public interface SqlFragmentOptions {

    /**
     * 是否在系统启动时扫描SQL文件<br>
     * 如果启动时不扫描, 则首次获取SQL模板时会扫描(很慢)<br>
     * 所以, 一般情况下都应该配置为true, 除非系统中未使用到SQL模板
     * 
     * @return 是否在系统启动时扫描SQL文件
     */
    boolean isSqlTemplateScanOnStartup();

    /**
     * 是否允许通过fragmentId获取SQL片断<br>
     * 如果不允许通过fragmentId获取SQL片断, 那么只能通过 fileName:fragmentId 获取SQL片断<br>
     * 例如 global.recursive.sql 中存在 recursive.list.children.query 片断<br>
     * 如果不允许, 那么只能通过 global.recursive:recursive.list.children.query 获取<br>
     * 否则 global.recursive:recursive.list.children.query 和 recursive.list.children.query 都可以
     * 
     * @return 是否允许通过fragmentId获取SQL片断
     */
    boolean isUseFragmentIdQuery();

    /**
     * 是否输出SQL片断冲突日志<br>
     * 如果希望使用fileName:fragmentId来获取SQL片断, 则可能有很多fragmentId是相同的<br>
     * 例如 xx.file.sql 和 yy.file.sql 中都有list方法, 此时:<br>
     * 1. conflictLogsEnabled设置为false<br>
     * 2. 使用 xx.file:list 和 yy.file:list 来获取SQL片断<br>
     * 
     * @return 是否输出SQL片断冲突日志
     */
    boolean isConflictLogsEnabled();
}
